
package sumo.box;


import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;

public class Bomba {
    private int x = 0;
    private int y = 0;
    private Image img = null;
    private Image[] figuras;
    
    public Bomba(int x, int y, boolean onPlace) throws SlickException {
        this.x = x;
        this.y = y;
        this.figuras = new Image[2];
        this.figuras[0] = new Image("src/IMAGES/bomb00.png");
        this.figuras[1] = new Image("src/IMAGES/bomb01.png");
        if(!onPlace){
            this.img = figuras[0];
        }
        else this.img = figuras[1];
    
        
    }
    
    public void setX(int x){
        this.x = x;
    }
    public void setY(int y){
        this.y = y;
    }
    public int getX(){
        return this.x;
    }
    public int getY(){
        return this.y;
    }
    public void addX(int x){
        this.x = this.x + x;
    }
    public void addY(int y){
        this.y = this.y + y;
    }    
    public void setImg(java.lang.String arq) throws SlickException{
        this.img = new Image(""+arq);
    }
    public Image getImg(){
        return this.img;
    }
    
    
    
    public void goEsq(Bomba[] bombs, Lugar places[], Personagem hero, boolean[][] blocked, int x, int y, int i){
        //nao tem muro
        if(!BlockedTest.test(blocked, this.x - 40, this.y)){
            //nao tem bomba -> anda a bomba e o cara
            if(!BombTest.test(bombs, this.x-40, this.y)){   
                //esta num lugar
                if(PlaceTest.test(places, this.x, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places,this.x,this.y);
                    this.img = figuras[0];
                    lugar.unDone();
                }
                //não esta num lugar
                //Vai para um lugar
                if(PlaceTest.test(places, this.x-40, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places, this.x-40, this.y);
                    Box.clickSound();
                    this.img = figuras[1];
                    lugar.Done();
                }
                //não vai para um lugar

                this.addX(-40);
                hero.addX(-40);
                hero.addMovs();
                Desfazer.setMove("bombEsq");
                Desfazer.setBomb(this);
                Box.arrastoSound();
            }
            //tem bomba apos a bomba -> nada
        }
    }
    
    
    
    
    public void goDir(Bomba[] bombs, Lugar places[], Personagem hero, boolean[][] blocked, int x, int y, int i){
        //nao tem muro
        if(!BlockedTest.test(blocked, this.x +40, this.y)){
            //nao tem bomba -> anda a bomba e o cara
            if(!BombTest.test(bombs, this.x+40, this.y)){    
                //esta num lugar
                if(PlaceTest.test(places, this.x, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places,this.x,this.y);
                    this.img = figuras[0];
                    lugar.unDone();
                }
                //não esta num lugar
                //Vai para um lugar
                if(PlaceTest.test(places, this.x+40, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places, this.x+40, this.y);
                    Box.clickSound();
                    this.img = figuras[1];
                    lugar.Done();
                }
                //não vai para um lugar
                
                this.addX(40);
                hero.addX(40);
                hero.addMovs();
                Desfazer.setMove("bombDir");
                Desfazer.setBomb(this);
                Box.arrastoSound();
            }
            //tem bomba apos a bomba -> nada
        }
    }
    
    
    
    public void goCima(Bomba[] bombs, Lugar places[], Personagem hero, boolean[][] blocked, int x, int y, int i){
        //nao tem muro
        if(!BlockedTest.test(blocked, this.x, this.y - 40)){
            //nao tem bomba -> anda a bomba e o cara
            if(!BombTest.test(bombs, this.x, this.y-40)){
                //esta num lugar
                if(PlaceTest.test(places, this.x, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places,this.x,this.y);
                    this.img = figuras[0];
                    lugar.unDone();
                }
                //não esta num lugar
                //Vai para um lugar
                if(PlaceTest.test(places, this.x, this.y-40)){
                    Lugar lugar = PlaceTest.qualLugar(places, this.x, this.y-40);
                    Box.clickSound();
                    this.img = figuras[1];
                    lugar.Done();
                }
                //não vai para um lugar
                
                
                this.addY(-40);
                hero.addY(-40);
                hero.addMovs();
                Desfazer.setMove("bombCima");
                Desfazer.setBomb(this);
                Box.arrastoSound();
            }
            //tem bomba apos a bomba -> nada
        }
    }
    
    
    
    public void goBaixo(Bomba[] bombs, Lugar places[], Personagem hero, boolean[][] blocked, int x, int y, int i){
        //nao tem muro
        if(!BlockedTest.test(blocked, this.x, this.y + 40)){
            //nao tem bomba -> anda a bomba e o cara
            if(!BombTest.test(bombs, this.x, this.y+40)){
                //esta num lugar
                if(PlaceTest.test(places, this.x, this.y)){
                    Lugar lugar = PlaceTest.qualLugar(places,this.x,this.y);
                    this.img = figuras[0];
                    lugar.unDone();
                }
                //não esta num lugar
                //Vai para um lugar
                if(PlaceTest.test(places, this.x, this.y+40)){
                    Lugar lugar = PlaceTest.qualLugar(places, this.x, this.y+40);
                    Box.clickSound();
                    this.img = figuras[1];
                    lugar.Done();
                }
                //não vai para um lugar
                
                this.addY(40);
                hero.addY(40);
                hero.addMovs();
                Desfazer.setMove("bombBaixo");
                Desfazer.setBomb(this);
                Box.arrastoSound();
            }
            //tem bomba apos a bomba -> nada
        }
            
    }
}
